package day_2022_12_to_3.year2023;

import java.util.ArrayList;
import java.util.List;

/**
 * @author haomin
 * @date 2023/02/26 23:23
 **/
public class Day2_26_Num1255 {
    class Solution {

        //用来存放所有可能的组合字符串
        public List<String> list;
        public int maxScoreWords(String[] words, char[] letters, int[] score) {
            //max存放最大值
            int max=0;
            int[] count=new int[26];
            //统计给出的每个字母数量
            for(int i=0;i<letters.length;i++){
                count[letters[i]-'a']++;
            }
            list = new ArrayList<String>();
            //递归获取所有可能
            GetString(words,0,"");
            //遍历
            for(String word:list){
                //数组用于记录每个字母次数
                int[] num=new int[26];
                //统计和循环控制
                int sum=0,i=-1;
                while(++i<word.length()){
                    int pos = word.charAt(i)-'a';
                    sum+=score[pos];
                    num[pos]++;
                    //超上限制则跳出
                    if(num[pos]>count[pos])break;
                }
                //判断是否符合条件
                if(i>=word.length()){
                    max=Math.max(sum,max);
                }
            }
            return max;
        }

        public void GetString(String[] words,int pos,String str){
            for(int i=pos;i<words.length;i++){
                GetString(words,i+1,str+words[i]);
                list.add(str+words[i]);
            }
        }
    }
}